/**
 * common-0.js
 * JAVASCRIPT基本类库和实现函数
 *
 */
/**********************************************************************************************
 *										基本变量
 **********************************************************************************************
 */
var config = [];	//参数配置
config['message'] = [];	//消息部分的参数
config['message']['display_time'] = 3000;	//显示时间
config['message']['fade_time'] = 300;	//淡入淡出时间
//config['message']['fade_time'] = 300;	//淡入淡出时间

var cookie_pre = 'ews_';
var gcookie = [];

/** 是否已经有message调用 */
var message_running = false;
var message_time = 0;
var message_type = '';
var message_settime = null;
var nav_timer = null;

/** 窗口是否打开 */
var wind_is_open = false;

$(document).ready(function(){
	$('#message').hide();
	$('#wind').hide();
	$('#wind-bg').hide();
	$('#wind-border').hide();
	
	var msg = get_cookie('message');
	if(msg && msg.length>0){
		delete_cookie('message');
		message(msg, 'info');
	}
	
	$.ajaxSetup({
		type : 'GET',
		error : function(XMLHttpRequest, textStatus, errorThrown){
			ajax_error(XMLHttpRequest, textStatus, errorThrown);
		},
		dataType : 'html',
		timeout : 1000
	});
	setTimeout(test, 300);
});
 

/**********************************************************************************************
 *										测试
 **********************************************************************************************
 */
function test(){
	//wind_show('<div style="padding:10px;">asdfasdfsofjwefjwaejfksadjfoawekfasjdofj</div>');
	//loading_show('asfdasfdasfd');
	//setTimeout(loading_hide, 3000);
}

/**********************************************************************************************
 *										通用业务函数
 **********************************************************************************************
 */
/**
*	记事本调用
*/
function notepad(){
	wind_href({href:'/notepad/add'});
}

/**
*	更新状态
*/
function update_doing(o){
	loading_show();
	var m = $(o).val();
	if(!m){
		var m = '';
	}
	m = $.trim(m);
	if(m.length == 0){
		return;
	}
	var options = {
		url : '/home/ibody',
		type : 'post',
		data : {message:m, inajax:2},
		success : function(data){
			loading_hide();
			if(data.code == 0){
				return;
			}
			message('更新成功', 'info');
			if(data.code == 1 && data.html){
				$('#feed-ul').prepend(data.html);
			}
			if(data.code == 2){
				wind_show(data.html);
			}
		},
		dataType : 'json'
	};
	$.ajax(options);
	$(o).val('');
	o.blur();
	
}

function tag_edit(o){
	var o = o || $('#tag-ul-editable');
	o = $(o);
	var tags = [];
	var viewspan = o.children('span');
	if(viewspan.children('input').length>0){
		var html = '';
		tags = viewspan.children('input').val().split(',');
		var tagli = []
		for(var i in tags){
			tags[i] = $.trim(tags[i]);
			if(tags[i].length > 0){
				tagli.push(tags[i]);
				html += '<a href="/tags/search?tag='+encodeURIComponent(tags[i])+'">'+tags[i]+'</a>';
			}
			viewspan.html(html);
			$.ajax({
				url : '/tag/update',
				type : 'POST',
				dataType : 'json',
				data : { type:'know', id:$('#knowledge_id').val(), tags:tagli.join(','), inajax:2},
				success: function(data){
					if(data.message){
						window.message(data.message);
					}
				}
			});
		}
	}else{
		viewspan.children().each(function(i){
			tags.push(this.innerText);
		});
		viewspan.html('<input type="text" value="" />');
		var input = viewspan.children('input');
		input.focus();
		input.val(tags.join(','));
		input.keydown(function(e){
			if(e.keyCode == 13){
				tag_edit(o);
			}
		});
	}
}

function edit_percent(id, p){
	loading_show();
	$.ajax({
		url : '/work/workpercent?id='+id+'&p='+p,
		success : function(data){
			loading_hide();
			message('修改成功');
		}
	});
}

/**********************************************************************************************
 *										基础类库
 **********************************************************************************************
 */
function is_undefined(v){
	return (typeof v == 'undefined');
}

function get_cookie(v){
	return $.cookie(cookie_pre+v);
}
function set_cookie(v, value){
	return $.cookie(cookie_pre+v, value);
}
function delete_cookie(v){
	return set_cookie(v, null);
}

function ajax_error(XMLHttpRequest, textStatus, errorThrown){
	loading_hide();
	var msg = '访问失败，';
	switch(textStatus){
		case 'timeout' : msg += '请求超时'; break;
		case 'error' : msg += '请求出错'; break;
		case 'notmodified' : msg += '为定义错误'; break;
		case 'parsererror' : msg += '解析出错'; break;
		default : msg += '未知出错';
	}
	message(msg, 'error');
}

function e_ce(e){
	e.returnValue = false;
	if (e.preventDefault){
		e.preventDefault();
	}
	e.cancelBubble = true;
	if (e.stopPropagation){
		e.stopPropagation();
	}
	if(window.event && window.event.returnValue){
		window.event.returnValue = false;
	}
}


/**********************************************************************************************
 *										全能框
 **********************************************************************************************
 */
function ibody(o){
	o.addEventListener('keydown', function(e){
		if(e.keyCode == 13){
			update_doing(o);
			e_ce(e);
		}
	}, false);
}
/**********************************************************************************************
 *										基本调用
 **********************************************************************************************
 */
function go_to(u){
	window.top.location.href = u;
}

function wind_href(o){
	if(!o){
		return;
	}
	var url = o.href;
	loading_show();
	
	$.ajax({
		url : url,
		data : {inajax:'1'},
		dataType : 'html',
		error : function(XMLHttpRequest, textStatus, errorThrown){
			ajax_error(XMLHttpRequest, textStatus, errorThrown);
			loading_hide();
		},
		success : function(data){
			data = $.trim(data);
			if(data.substr(0,1) != '<'){
				message(data, 'notice');
			}else{
				wind_show(data);
			}
			loading_hide();
		}
	});
}

function wind_show(htmldata){
	var o = document.getElementById('wind');
	var border = document.getElementById('wind-border');
	//$(o).html(htmldata);
	$(o).html(htmldata);//.innerHTML = htmldata;
	$(o).show();
	wind_is_open = true;
	$('#wind-bg').show();
	var body_width = document.body.offsetWidth;
	var this_width = o.offsetWidth;
	var left = ((body_width - this_width) / 2 );
	o.style.left = left + 'px';
	border.style.left = (left - 5) + 'px';
	border.style.height = o.offsetHeight + 'px';
	border.style.width = o.offsetWidth + 'px';
	$(border).fadeIn(100);
}
function wind_hide(){
	wind_is_open = false;
	$('#wind').fadeOut(100).html('');
	$('#wind-border').hide();
	$('#wind-bg').fadeOut(100);
}


function loading_show(){
	$('#loading').css('left', '-5px');
}
function loading_hide(){
	$('#loading').css('left', '-72px');
}

/**
 * 提示消息
 * @param string msg 消息内容
 * @param string type 类型 有三种选项：[error|info|notice]
 */
function message(msg, type){
	var conf = config['message'];
	if(is_undefined(type)){
		var type = 'info';
	}
	var o = $('#message');
	o.html(msg);
	o.attr('class', type);
	if(message_running){
		clearTimeout(message_settime);
		message_bg();
	}else{
		o.fadeIn(conf.fade_time);
	}
	message_running = true;
	message_settime = setTimeout(function(){
		message_running = false;
		var o = $("#message");
		o.fadeOut(config.message.fade_time);
		o.removeClass(message_type);
	}, conf.display_time);
}

/**
 * 执行动画效果 
 */
function message_bg(){
	message_time = 7;
	_message_bg();
}

/**
 * message_bg() 私有函数
 * 执行动画效果
 */
function _message_bg(){
	if(message_time == 0) return;
	var opacity = 1;
	if(message_time % 2 == 0){
		opacity = 0.5;
	}
	message_time--;
	$('#message').fadeTo(150, opacity, _message_bg);
}